package project

import (
	"gorm.io/gorm"
)

// 项目信息表，对应一个省份
type Projects struct {
	gorm.Model
	ProjectName        string `gorm:"type:varchar(100);not null;uniqueIndex:idx_project_name_id"` // 项目名称
	ProjectID          string `gorm:"type:varchar(50);uniqueIndex:idx_project_name_id"`           // 项目ID
	ProjectDescription string `gorm:"type:varchar(100)"`                                          // 项目说明
	ProjectStatus      string `gorm:"type:varchar(20)"`                                           // 项目状态
	ProjectVisible     string `gorm:"type:varchar(10)"`                                           // 项目是否可见（个人或团队）
	ProjectFlag        string `gorm:"type:varchar(10)"`                                           // 项目标识
	ProjectStartTime   string `gorm:"type:timestamp"`                                             // 项目开始时间
	ProjectEndTime     string `gorm:"type:timestamp"`                                             // 项目结束时间
	ProjectManagerId   string `gorm:"type:varchar(50)"`                                           // 项目所有者ID号
	ProjectMemberId    string `gorm:"type:varchar(300)"`                                          // 项目成员ID号
	ProjectCreateTime  string `gorm:"type:timestamp"`                                             // 项目创建时间
	ProjectUpdateTime  string `gorm:"type:timestamp"`                                             // 项目更新时间
}

// 项目具体的系统信息表(汇总信息)
type ProjectItemsInfo struct {
	gorm.Model
	ProjectID      string `gorm:"type:varchar(20)"`                      // 项目ID，对应Projects表的ProjectID
	ProjectItemsId string `gorm:"type:varchar(20);not null;uniqueIndex"` // 系统ID，每个系统有自己的ID
	SystemName     string `gorm:"type:varchar(500);not null"`            // 系统名称
	// 问题个数,由ProjectItemsPlan表的Issue统计而来
	IssueCount string `gorm:"type:varchar(10)"`
	// 适配状态（进度），由ProjectItemsPlan表的预计上线时间（ExpectBeOnlineTime）得来
	ReformStatus string `gorm:"type:varchar(20)"`
}

// 具体的交付信息
type ProjectItemsPlan struct {
	gorm.Model
	ProjectItemsId string `gorm:"type:varchar(20);not null;uniqueIndex"` // 系统ID，对应ProjectItemsInfo表的ProjectItemsId
	// 问题列表信息
	Issue string `gorm:"type:varchar(3000)"`
	// 系统调研表
	SystemSurveyExcel string `gorm:"type:varchar(200)"`
	// 预计上线时间
	ExpectBeOnlineTime string `gorm:"type:varchar(100)"`
	// 模拟割接时间
	ExpectBeSimulateTime string `gorm:"type:varchar(100)"`
	// 集群部署进度
	ClusterDeployStatus string `gorm:"type:varchar(20)"`
	// 兼容性参数调整
	CompatibleChange string `gorm:"type:varchar(10)"`
	// 特殊版本限制
	SpecialVersionLimit string `gorm:"type:varchar(20)"`
	// guc参数检查
	GUCParamCheck string `gorm:"type:varchar(10)"`
	// lic检查
	LicenseCheck string `gorm:"type:varchar(10)"`
	// 白名单配置
	WhiteListConfiguration string `gorm:"type:varchar(10)"`
	// 归档与备份配置
	ArchiveAndBackupConfiguration string `gorm:"type:varchar(10)"`
	// 主机、数据库监控检查
	ServerAndDBMonitor string `gorm:"type:varchar(10)"`
	// 磁盘、IO、CPU检查
	DiskAndIOAndCPUCheck string `gorm:"type:varchar(10)"`
	// 迁移测试
	MigrateTest string `gorm:"type:varchar(10)"`
	// 交付确认单
	DeployConfirmForm string `gorm:"type:varchar(5)"`
	// 交付确认单路径
	DeployConfirmFormPath string `gorm:"type:varchar(150)"`
}

// 台账列表
type Ledger struct {
	gorm.Model
	ProjectItemsId string `gorm:"type:varchar(120);not null;uniqueIndex;comment:项目条目ID"`
	// 工单年度
	TicketYears string `gorm:"type:varchar(10);not null;comment:工单年度"`
	// 项目负责人
	ProjectManager string `gorm:"type:varchar(20);not null;comment:项目负责人"`
	// 项目A角色
	ProjectRoleA string `gorm:"type:varchar(20);comment:项目A角色"`
	// 局方负责人
	OfficialManager string `gorm:"type:varchar(20);comment:局方负责人"`
	// 工单信息
	TicketInfo string `gorm:"type:varchar(100);comment:工单信息"`
	// 项目状态
	ProjectStatus string `gorm:"type:varchar(10);comment:项目状态"`
	// 进度流水
	ProgressStream string `gorm:"type:varchar(10);comment:进度流水"`
	// 期望交付时间
	ExpectDeployTime string `gorm:"type:varchar(20);comment:期望交付时间"`
	// 项目答复上线时间
	ProjectReplyOnlineTime string `gorm:"type:varchar(20);comment:项目答复上线时间"`
	ServerInfo
	DatabaseInfo
	// 环境
	Env string `gorm:"type:varchar(20);comment:环境"`
	// 主机是否交维
	ServerHandover string `gorm:"type:varchar(10);comment:主机是否交维"`
	// 是否需要迁移
	Migrate string `gorm:"type:varchar(10);comment:是否需要迁移"`
	// 预计上线时间
	ExpectOnlineTime string `gorm:"type:varchar(20);comment:预计上线时间"`
	// 归属公司
	BelongCompany string `gorm:"type:varchar(20);comment:归属公司"`
	// 归属部门
	BelongApartment string `gorm:"type:varchar(20);comment:归属部门"`
	// 所属业务
	BelongBusiness string `gorm:"type:varchar(20);comment:所属业务"`
	// 子系统名称
	SubSystemName string `gorm:"type:varchar(20);comment:子系统名称"`
	// 业务等级
	BussinessLevel string `gorm:"type:varchar(20);comment:业务等级"`
	// 主要用途
	MainUses string `gorm:"type:varchar(50);comment:主要用途"`
	// 业务负责人
	ProjectBussinessManager string `gorm:"type:varchar(20);comment:业务负责人"`
	// 联系人电话
	ContactPhoneNumber string `gorm:"type:varchar(20);comment:联系人电话"`
	// 登录方式
	LoginType string `gorm:"type:varchar(20);comment:登录方式"`
	// 用户名密码
	UserAndPasswd string `gorm:"type:varchar(20);comment:用户名密码"`
	// 备注
	Remarks string `gorm:"type:varchar(500);comment:备注"`
}

// 机器信息
type ServerInfo struct {
	ProjectItemsId string `gorm:"type:varchar(120);not null;uniqueIndex;comment:项目条目ID"`
	// 机型
	ServerType string `gorm:"type:varchar(10);comment:机型"`
	// 架构
	ServerStructure string `gorm:"type:varchar(5);comment:架构"`
	// 系统
	OsName string `gorm:"type:varchar(50);comment:系统"`
	// CPU架构
	CpuStructure string `gorm:"type:varchar(10);comment:CPU架构"`
	// CPU信息
	CpuInfo string `gorm:"type:varchar(30);comment:CPU信息"`
	// CPU核数
	CpuCoreCount string `gorm:"type:varchar(10);comment:CPU核数"`
	// OS平台
	OsPlantform string `gorm:"type:varchar(30);comment:OS平台"`
	// OS版本
	OsVersion string `gorm:"type:varchar(20);comment:OS版本"`
	// OS内核版本
	OsCoreVersion string `gorm:"type:varchar(100);comment:OS内核版本"`
	// 内存
	MemoryInfo string `gorm:"type:varchar(10);comment:内存"`
	// 	磁盘
	DiskInfo string `gorm:"type:varchar(20);comment:磁盘"`
	// 架构
	Structure string `gorm:"type:varchar(20);comment:架构"`
	// cluster名
	ClusterName string `gorm:"type:varchar(20);comment:cluster名"`
	// 主机名
	HostName string `gorm:"type:varchar(20);comment:主机名"`
	// 所属域
	Domain string `gorm:"type:varchar(10);comment:所属域"`
	// 所属资源池及POD
	Pod string `gorm:"type:varchar(20);comment:所属资源池及POD"`
}

// 数据库信息
type DatabaseInfo struct {
	ProjectItemsId string `gorm:"type:varchar(120);not null;uniqueIndex;comment:项目条目ID"`
	// 数据量
	DataVolume string `gorm:"type:varchar(10);comment:数据量"`
	// DB类型
	DbType string `gorm:"type:varchar(10);comment:DB类型"`
	// DB版本
	DbVersion string `gorm:"type:varchar(10);comment:DB版本"`
	// 兼容模式
	CompatibleModel string `gorm:"type:varchar(5);comment:兼容模式"`
	// IP
	DbIp string `gorm:"type:varchar(10);comment:IP"`
	// VIP
	DbVip string `gorm:"type:varchar(10);comment:VIP"`
	// 数据库端口
	DbPort string `gorm:"type:varchar(10);comment:数据库端口"`
	// 数据目录
	DbDataPath string `gorm:"type:varchar(50);comment:数据目录"`
	// 归档目录
	DbArchivePath string `gorm:"type:varchar(50);comment:归档目录"`
	// 备份目录
	DbBackupPath string `gorm:"type:varchar(50);comment:备份目录"`
	// 备份策略
	DbBackupStrategy string `gorm:"type:varchar(30);comment:备份策略"`
	// 监控是否对接
	Monitor string `gorm:"type:varchar(10);comment:监控是否对接"`
}
